#pragma once

#include <variant>

#include "git-branch.h"
#include "git-remote-track-branch.h"
#include "git-upstream.h"

namespace git
{

class LocalBranch : public Branch
{
public:
    LocalBranch() {}

    LocalBranch(const LocalBranch &) = delete;

    LocalBranch(LocalBranch &&b);
    
    virtual ~LocalBranch();

    LocalBranch &operator=(const LocalBranch &) = delete;

    LocalBranch &operator=(LocalBranch &&b);

    Upstream upstream() const;

private:
    LocalBranch(git_reference *ref);

    friend class Repo;
};

} // namespace git
